<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Eigen-unsupported: Eigen::EulerSystem&lt; _AlphaAxis, _BetaAxis, _GammaAxis &gt; Class Template Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
  $(document).ready(function() { init_search(); });
/* @license-end */
</script>
<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
    jax: ["input/TeX","output/HTML-CSS"],
});
</script>
<script type="text/javascript" async="async" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="eigendoxy.css" rel="stylesheet" type="text/css">
<!--  -->
<script type="text/javascript" src="eigen_navtree_hacks.js"></script>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="Eigen_Silly_Professor_64x64.png"/></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname"><a href="http://eigen.tuxfamily.org">Eigen-unsupported</a>
   &#160;<span id="projectnumber">3.4.90 (git rev 67eeba6e720c5745abc77ae6c92ce0a44aa7b7ae)</span>
   </div>
  </td>
   <td>        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.svg"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
          </span>
        </div>
</td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('classEigen_1_1EulerSystem.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="classEigen_1_1EulerSystem-members.html">List of all members</a> &#124;
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-static-attribs">Static Public Attributes</a>  </div>
  <div class="headertitle">
<div class="title">Eigen::EulerSystem&lt; _AlphaAxis, _BetaAxis, _GammaAxis &gt; Class Template Reference<div class="ingroups"><a class="el" href="group__EulerAngles__Module.html">EulerAngles module</a></div></div>  </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><h3>template&lt;int _AlphaAxis, int _BetaAxis, int _GammaAxis&gt;<br />
class Eigen::EulerSystem&lt; _AlphaAxis, _BetaAxis, _GammaAxis &gt;</h3>

<p>Represents a fixed Euler rotation system. </p>
<p>This meta-class goal is to represent the Euler system in compilation time, for <a class="el" href="classEigen_1_1EulerAngles.html" title="Represents a rotation in a 3 dimensional space as three Euler angles.">EulerAngles</a>.</p>
<p>You can use this class to get two things:</p><ul>
<li>Build an Euler system, and then pass it as a template parameter to <a class="el" href="classEigen_1_1EulerAngles.html" title="Represents a rotation in a 3 dimensional space as three Euler angles.">EulerAngles</a>.</li>
<li>Query some compile time data about an Euler system. (e.g. Whether it's Tait-Bryan)</li>
</ul>
<p>Euler rotation is a set of three rotation on fixed axes. (see <a class="el" href="classEigen_1_1EulerAngles.html">EulerAngles</a>) This meta-class store constantly those signed axes. (see <a class="el" href="group__EulerAngles__Module.html#gae614aa7cdd687fb5c421a54f2ce5c361">EulerAxis</a>)</p>
<h3><a class="anchor" id="autotoc_md122"></a>
Types of Euler systems</h3>
<p>All and only valid 3 dimension Euler rotation over standard signed axes{+X,+Y,+Z,-X,-Y,-Z} are supported:</p><ul>
<li>all axes X, Y, Z in each valid order (see below what order is valid)</li>
<li>rotation over the axis is supported both over the positive and negative directions.</li>
<li>both Tait-Bryan and proper/classic Euler angles (i.e. the opposite).</li>
</ul>
<p>Since <a class="el" href="classEigen_1_1EulerSystem.html" title="Represents a fixed Euler rotation system.">EulerSystem</a> support both positive and negative directions, you may call this rotation distinction in other names:</p><ul>
<li><em>right handed</em> or <em>left handed</em></li>
<li><em>counterclockwise</em> or <em>clockwise</em></li>
</ul>
<p>Notice all axed combination are valid, and would trigger a static assertion. Same unsigned axes can't be neighbors, e.g. {X,X,Y} is invalid. This yield two and only two classes:</p><ul>
<li><em>Tait-Bryan</em> - all unsigned axes are distinct, e.g. {X,Y,Z}</li>
<li><em>proper/classic Euler angles</em> - The first and the third unsigned axes is equal, and the second is different, e.g. {X,Y,X}</li>
</ul>
<h3><a class="anchor" id="autotoc_md123"></a>
Intrinsic vs extrinsic Euler systems</h3>
<p>Only intrinsic Euler systems are supported for simplicity. If you want to use extrinsic Euler systems, just use the equal intrinsic opposite order for axes and angles. I.e axes (A,B,C) becomes (C,B,A), and angles (a,b,c) becomes (c,b,a).</p>
<h3><a class="anchor" id="autotoc_md124"></a>
Convenient user typedefs</h3>
<p>Convenient typedefs for <a class="el" href="classEigen_1_1EulerSystem.html" title="Represents a fixed Euler rotation system.">EulerSystem</a> exist (only for positive axes Euler systems), in a form of <a class="el" href="classEigen_1_1EulerSystem.html" title="Represents a fixed Euler rotation system.">EulerSystem</a>{A}{B}{C}, e.g. EulerSystemXYZ.</p>
<h3><a class="anchor" id="autotoc_md125"></a>
Additional reading</h3>
<p>More information about Euler angles: <a href="https://en.wikipedia.org/wiki/Euler_angles">https://en.wikipedia.org/wiki/Euler_angles</a></p>
<dl class="tparams"><dt>Template Parameters</dt><dd>
  <table class="tparams">
    <tr><td class="paramname">_AlphaAxis</td><td>the first fixed EulerAxis</td></tr>
    <tr><td class="paramname">_BetaAxis</td><td>the second fixed EulerAxis</td></tr>
    <tr><td class="paramname">_GammaAxis</td><td>the third fixed EulerAxis </td></tr>
  </table>
  </dd>
</dl>
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:af4db14dfa28ee9d7c73050b8776ce0ea"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom">{ <br />
&#160;&#160;<a class="el" href="classEigen_1_1EulerSystem.html#af4db14dfa28ee9d7c73050b8776ce0eaa58eb5d1cddcc26fc15f643eab45ce06b">AlphaAxisAbs</a>
, <br />
&#160;&#160;<a class="el" href="classEigen_1_1EulerSystem.html#af4db14dfa28ee9d7c73050b8776ce0eaa6a215356d13cf14b7c48a27117dbc3ba">BetaAxisAbs</a>
, <br />
&#160;&#160;<a class="el" href="classEigen_1_1EulerSystem.html#af4db14dfa28ee9d7c73050b8776ce0eaa121638032850c0d43438aedfb32e3d4f">GammaAxisAbs</a>
, <br />
&#160;&#160;<a class="el" href="classEigen_1_1EulerSystem.html#af4db14dfa28ee9d7c73050b8776ce0eaa44dcc3422221a0284b76970e01f03877">IsAlphaOpposite</a>
, <br />
&#160;&#160;<a class="el" href="classEigen_1_1EulerSystem.html#af4db14dfa28ee9d7c73050b8776ce0eaa940fe9742857e33fa7d036f3a0fff57c">IsBetaOpposite</a>
, <br />
&#160;&#160;<a class="el" href="classEigen_1_1EulerSystem.html#af4db14dfa28ee9d7c73050b8776ce0eaa3e7e0d4bd2abf4da43c48c3d0ecafbfe">IsGammaOpposite</a>
, <br />
&#160;&#160;<a class="el" href="classEigen_1_1EulerSystem.html#af4db14dfa28ee9d7c73050b8776ce0eaa3e35fba7036026953caf28323e699dc9">IsOdd</a>
, <br />
&#160;&#160;<a class="el" href="classEigen_1_1EulerSystem.html#af4db14dfa28ee9d7c73050b8776ce0eaa5066a58a34a7acfab35b76398d2cd506">IsEven</a>
, <br />
&#160;&#160;<a class="el" href="classEigen_1_1EulerSystem.html#af4db14dfa28ee9d7c73050b8776ce0eaa900def911be74336de5186063de0a21c">IsTaitBryan</a>
<br />
 }</td></tr>
<tr class="separator:af4db14dfa28ee9d7c73050b8776ce0ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-attribs"></a>
Static Public Attributes</h2></td></tr>
<tr class="memitem:a32a9f308f23fcf1ca8e510fdec0387a9"><td class="memItemLeft" align="right" valign="top">static constexpr int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1EulerSystem.html#a32a9f308f23fcf1ca8e510fdec0387a9">AlphaAxis</a></td></tr>
<tr class="separator:a32a9f308f23fcf1ca8e510fdec0387a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af93edaf2a5d47dbc0c9f88c3f4d0ba23"><td class="memItemLeft" align="right" valign="top">static constexpr int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1EulerSystem.html#af93edaf2a5d47dbc0c9f88c3f4d0ba23">BetaAxis</a></td></tr>
<tr class="separator:af93edaf2a5d47dbc0c9f88c3f4d0ba23"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aac63efcf284a2908e5a33aaf503ccba3"><td class="memItemLeft" align="right" valign="top">static constexpr int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classEigen_1_1EulerSystem.html#aac63efcf284a2908e5a33aaf503ccba3">GammaAxis</a></td></tr>
<tr class="separator:aac63efcf284a2908e5a33aaf503ccba3"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Member Enumeration Documentation</h2>
<a id="af4db14dfa28ee9d7c73050b8776ce0ea"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af4db14dfa28ee9d7c73050b8776ce0ea">&#9670;&nbsp;</a></span>anonymous enum</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;int _AlphaAxis, int _BetaAxis, int _GammaAxis&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">anonymous enum</td>
        </tr>
      </table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="af4db14dfa28ee9d7c73050b8776ce0eaa58eb5d1cddcc26fc15f643eab45ce06b"></a>AlphaAxisAbs&#160;</td><td class="fielddoc"><p>the first rotation axis unsigned </p>
</td></tr>
<tr><td class="fieldname"><a id="af4db14dfa28ee9d7c73050b8776ce0eaa6a215356d13cf14b7c48a27117dbc3ba"></a>BetaAxisAbs&#160;</td><td class="fielddoc"><p>the second rotation axis unsigned </p>
</td></tr>
<tr><td class="fieldname"><a id="af4db14dfa28ee9d7c73050b8776ce0eaa121638032850c0d43438aedfb32e3d4f"></a>GammaAxisAbs&#160;</td><td class="fielddoc"><p>the third rotation axis unsigned </p>
</td></tr>
<tr><td class="fieldname"><a id="af4db14dfa28ee9d7c73050b8776ce0eaa44dcc3422221a0284b76970e01f03877"></a>IsAlphaOpposite&#160;</td><td class="fielddoc"><p>whether alpha axis is negative </p>
</td></tr>
<tr><td class="fieldname"><a id="af4db14dfa28ee9d7c73050b8776ce0eaa940fe9742857e33fa7d036f3a0fff57c"></a>IsBetaOpposite&#160;</td><td class="fielddoc"><p>whether beta axis is negative </p>
</td></tr>
<tr><td class="fieldname"><a id="af4db14dfa28ee9d7c73050b8776ce0eaa3e7e0d4bd2abf4da43c48c3d0ecafbfe"></a>IsGammaOpposite&#160;</td><td class="fielddoc"><p>whether gamma axis is negative </p>
</td></tr>
<tr><td class="fieldname"><a id="af4db14dfa28ee9d7c73050b8776ce0eaa3e35fba7036026953caf28323e699dc9"></a>IsOdd&#160;</td><td class="fielddoc"><p>whether the Euler system is odd </p>
</td></tr>
<tr><td class="fieldname"><a id="af4db14dfa28ee9d7c73050b8776ce0eaa5066a58a34a7acfab35b76398d2cd506"></a>IsEven&#160;</td><td class="fielddoc"><p>whether the Euler system is even </p>
</td></tr>
<tr><td class="fieldname"><a id="af4db14dfa28ee9d7c73050b8776ce0eaa900def911be74336de5186063de0a21c"></a>IsTaitBryan&#160;</td><td class="fielddoc"><p>whether the Euler system is Tait-Bryan </p>
</td></tr>
</table>

</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="a32a9f308f23fcf1ca8e510fdec0387a9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a32a9f308f23fcf1ca8e510fdec0387a9">&#9670;&nbsp;</a></span>AlphaAxis</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;int _AlphaAxis, int _BetaAxis, int _GammaAxis&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr int <a class="el" href="classEigen_1_1EulerSystem.html">Eigen::EulerSystem</a>&lt; _AlphaAxis, _BetaAxis, _GammaAxis &gt;::AlphaAxis</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">constexpr</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>The first rotation axis </p>

</div>
</div>
<a id="af93edaf2a5d47dbc0c9f88c3f4d0ba23"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af93edaf2a5d47dbc0c9f88c3f4d0ba23">&#9670;&nbsp;</a></span>BetaAxis</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;int _AlphaAxis, int _BetaAxis, int _GammaAxis&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr int <a class="el" href="classEigen_1_1EulerSystem.html">Eigen::EulerSystem</a>&lt; _AlphaAxis, _BetaAxis, _GammaAxis &gt;::BetaAxis</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">constexpr</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>The second rotation axis </p>

</div>
</div>
<a id="aac63efcf284a2908e5a33aaf503ccba3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aac63efcf284a2908e5a33aaf503ccba3">&#9670;&nbsp;</a></span>GammaAxis</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;int _AlphaAxis, int _BetaAxis, int _GammaAxis&gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">constexpr int <a class="el" href="classEigen_1_1EulerSystem.html">Eigen::EulerSystem</a>&lt; _AlphaAxis, _BetaAxis, _GammaAxis &gt;::GammaAxis</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span><span class="mlabel">constexpr</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>The third rotation axis </p>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="EulerSystem_8h_source.html">EulerSystem.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="namespaceEigen.html">Eigen</a></li><li class="navelem"><a class="el" href="classEigen_1_1EulerSystem.html">EulerSystem</a></li>
    <li class="footer">Generated on Thu Apr 21 2022 13:08:00 for Eigen-unsupported by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.9.1 </li>
  </ul>
</div>
</body>
</html>
